/*
 * @Description: 
 * @Author: changqing
 * @Date: 2021-08-16 16:06:42
 * @LastEditTime: 2021-08-16 16:08:19
 * @LastEditors: changqing
 * @Usage: 
 */

//延迟运算亦或说call-by-need,是一种运算策略(evaluation strategy)，简单来说我们延迟一个表达式的运算时机直到真正需要它的值在做运算
//这里我们写了一个用来抓取字符串中的大写字母，for..of的方式取得每个字母并用正则表达式来判断是不是数值，如果为真就转成数值并回传。当我们把一个字符串丢进getCount函数式，并没有马上运算出所有字母，必须等到我们执行next时，才会真的做运算，这就是所谓的延迟运算(evaluation strategy)

function * getCount(words){
	for (const word of words){
		if(/[A-Z]+$/.test(word)){
			 yield word
		}
	}
}
const iterator = getCount('RxJS训练营')
iterator.next()
//{value: "R", done: false}
iterator.next()
//{value: "J", done: false}
iterator.next()
//{value: "S", done: false}
iterator.next()
//{value: undefined, done: true}